PlayerMonitoring [C#]
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using WpfApplication1.ServiceReference1;
using System.Collections.ObjectModel;
namespace WpfApplication1
{
public partial class PlayerMonitoring : UserControl
{
ServiceSample sample = new ServiceSample();
List<View_StatusM> listPLayer;
public PlayerMonitoring()
{
InitializeComponent();
}
public PlayerMonitoring(string login, string password)
{
InitializeComponent();
List<View_Group> listResult;
sample.GetGroup(out listResult, login, password);
treeGroup.ItemsSource = TreeNode.GetTreeNode(listResult);
long serverDate;
sample.GetMonitoring(out listPLayer, out serverDate);
Monitoring.ServerDate = serverDate;
}
private void treeGroup_SelectedItemChanged(object sender, RoutedPropertyChangedEventArgs<object> e)
{
ObservableCollection<Monitoring> listMonitoring = new ObservableCollection<Monitoring>();
(from l1 in listPLayer where l1.GroupId == (treeGroup.SelectedItem as TreeNode).Id select l1).ToList().ForEach(x => listMonitoring.Add(new Monitoring(x)));
gridPlayer.ItemsSource = listMonitoring;
}
private void btnValidate_Click(object sender, RoutedEventArgs e)
{
List<long> listPLayerId = (from l1 in (gridPlayer.ItemsSource as ObservableCollection<Monitoring>) where l1.IsChecked select l1.player.PlayerId).ToList();
sample.SendUpdate(listPLayerId);
MessageBox.Show("Updates Sent");
}
private void gridPlayer_LoadingRow(object sender, DataGridRowEventArgs e)
{
e.Row.Header = (e.Row.GetIndex() + 1).ToString();
}
}
public class Monitoring
{
static long serverDate;
static long clientDate;
static public long ServerDate
{
get { return serverDate + DateTime.Now.Ticks - clientDate; }
set { serverDate = value; clientDate = DateTime.Now.Ticks; }
}
public View_StatusM player;
public Monitoring(View_StatusM player)
{
this.player = player;
}
public Boolean IsChecked { get; set; }
public string PlayerName { get { return player.PlayerName; } }
public string EditDate { get { return ((player.LastEditDate == null) ? "" : (player.LastEditDate ?? DateTime.Now).ToShortDateString()); } }
public string SentBy { get { return (player.ManagerName == null && player.Time != null) ? "Auto Update" : player.ManagerName;} }
public string DownloadStatus
{
get
{
if (player.OptionTypeId == 0 && player.DownloadPercent == 0) return "Differed";
else if (player.DownloadPercent == 100) return "Done";
else return player.DownloadPercent + "%";
}
}
public string Playlist { get { return player.PlaylistName; } }
public SolidColorBrush Status
{
get
{
bool isAlive = TimeSpan.FromTicks(ServerDate - (long)(player.LastNotify??0)).TotalMinutes < 10;
if (isAlive && (player.AlertCount == 0 || player.AlertCount == null)) return new SolidColorBrush(Color.FromArgb(255, 178, 204, 227));
else if (isAlive) return new SolidColorBrush(Color.FromArgb(255, 252, 242, 190));
else return new SolidColorBrush(Color.FromArgb(255, 209, 180, 184));
}
}
public string Alert { get { return player.AlertCount.ToString(); } }
public string ScreenStatus { get { return player.RSstatus; } }
public string ScreenColor { get { return player.colorId.ToString(); } }
public string Version { get { return player.Version; } }
}
}